var express = require('express');
var async = require('async');
var router = express.Router();
var retUtil = require('./util/retUtil');
var documentUtil = require('./util/documentUtil');
var orderUtil = require('./util/orderUtil');
var userUtil = require('./util/userUtil');
var sundryUtil = require('./util/sundryUtil');
var CODE = require('../../../common/code');
var CONFIG = require('../../../common/config');
var rpcFunc=require('../../routes/rpcSrv/rpcFunc.js');
var tg3Util = require('../../routes/util/tg3Util');
// var StaticizeUtil = require('../../../commonUtils/util/StaticizeUtil');




var staticizeUtil = require('./util/staticizeUtil');
router.get('/',function (req, res, next) {
    res.send('respond with a document resource');
});

/**
 * 收藏/取消收藏模板
 *
 * @author  毛凯
 * @date 2017-11-16
 *
 * 参数名称	是否必须	示例	备注
 * device	是
 *               610
 *               6 字段为 一键秀 相关标记
 *               600 一键秀网页端
 *               610 一键秀 android 端
 *               620 一键秀 iOS 端
 *               630 一键秀 嵌入网页端
 *               640 一键秀微信端
 *               650 一键秀小程序端
 * userId	是 299188 用户唯一标识
 * tmplId	是 789 模板唯一标识
 * collect	是 0 0/1, 0 标识取消收藏, 1 标识收藏
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/28
 * 测试地址：http://localhost:3000/yjx/v1/document/setTmplCollectStatus_v1_0?device=6&userId=299188&tmplId=789&collect=(0/1)
 */
function setTmplCollectStatus_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var tmplId = retUtil.numberFromReq(req, 'tmplId');
    var collect = retUtil.numberFromReq(req, 'collect');
    if(device <= 0 || userId <= 0 || tmplId <= 0 || collect < 0 || collect > 1 ){
        return retUtil.ret_err_json('参数错误', res);
    }
    //调用工具类方法通过collect标记（ 0 标识取消收藏, 1 标识收藏）来添加收藏与取消收藏
    documentUtil.setTmplCollectStatus_v1_0(collect, userId, tmplId, function(setStatusErr){
        if(setStatusErr) {
            return retUtil.ret_err_json(setStatusErr, res);
        }
        return retUtil.ret_succ_json({}, res);
    });
}

router.get('/setTmplCollectStatus_v1_0',setTmplCollectStatus_v1_0);
router.post('/setTmplCollectStatus_v1_0',setTmplCollectStatus_v1_0);


/**
 * 获取视频可用背景列表
 *
 * @author 李强
 * @date 2017-11-17
 *
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  docId : (模版唯一标识)
 *  pageNum: 页码
 *  pageSize : 页容量
 *  withTotalPage : 0/1 是否获取总页数, 如需获取传递1, 否则传递0
 * 返回 :    http://114.55.172.253:7000/mock/11/yjx/v1/user/getUserDetailInfo_v1_0
 * 测试地址： http://localhost:3000/yjx/v1/document/getVideoUserDocBgList_v1_0?userId=299188&docId=100&pageNum=0&pageSize=12&withTotalPage=1
 * */
function getVideoUserDocBgList_v1_0 (req,res,next){
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');
    var pageNum = retUtil.numberFromReq(req, 'pageNum');
    var pageSize = retUtil.numberFromReq(req, 'pageSize') || 12;
    var device = retUtil.numberFromReq(req, 'device');
    var withTotalPage = retUtil.numberFromReq(req, 'withTotalPage');

    if(userId <= 0 || docId <=0){
        return retUtil.ret_err_json("参数错误", res);
    }
    //获取视频可用背景列表
    documentUtil.getVideoUserDocBgList_v1_0(userId,docId,pageNum,pageSize,withTotalPage,function(err,retults){
        if(err) {
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(retults, res);
    });
}
router.get('/getVideoUserDocBgList_v1_0', getVideoUserDocBgList_v1_0);
router.post('/getVideoUserDocBgList_v1_0', getVideoUserDocBgList_v1_0);


//============================================================================
/**
 * 新增/切换视频背景
 * @author 李强
 * @date 2017-11-20
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  docId : (模版唯一标识)
 *  bgId :  (背景模版唯一标识)
 * 返回 :    http://114.55.172.253:7000/mock/11/yjx/v1/document/setVideoBG_v1_0
 * 测试地址： http://localhost:3000/yjx/v1/document/setVideoBG_v1_0?userId=299188&docId=100&bgId=10&device=610
 * */
function setVideoBG_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,"device");
    var bgId = retUtil.numberFromReq(req,"bgId");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    if(bgId <= 0 || userId <= 0||docId <= 0){
        return retUtil.ret_err_json("参数错误",res);
    }
    //添加/替换视频背景
    documentUtil.setVideoBG_v1_0(userId,bgId,docId,function(err,res02){
        if(err){
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(res02,res);
    })

}
router.get('/setVideoBG_v1_0', setVideoBG_v1_0);
router.post('/setVideoBG_v1_0', setVideoBG_v1_0);


//============================================================================
/**
 * 清空视频背景
 * @author 李强
 * @date 2017-11-20
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  docId : (模版唯一标识)
 * 返回 :    http://114.55.172.253:7000/mock/11/yjx/v1/document/clearVideoBG_v1_0
 * 测试地址： http://localhost:3000/yjx/v1/document/clearVideoBG_v1_0?userId=299188&docId=100&device=610
 * */
function clearVideoBG_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    if(userId <= 0||docId <= 0){
        return retUtil.ret_err_json("参数错误",res);
    }
    //清空视频背景
    documentUtil.clearVideoBG_v1_0(userId,docId,function(err,res02){
        if(err){
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(res02,res);
    })

}
router.get('/clearVideoBG_v1_0', clearVideoBG_v1_0);
router.post('/clearVideoBG_v1_0', clearVideoBG_v1_0);

//=============================================================================
/**
 * 修改视频背景
 * @author 李强
 * @date 2017-11-20
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  docId : (作品唯一标识)
 *  bgString : 背景json字符串(设计模版核心数据)
 * 返回 :    http://114.55.172.253:7000/mock/11/yjx/v1/document/updateVideoDocBg_v1_0
 * 测试地址： http://localhost:3000/yjx/v1/document/updateVideoDocBg_v1_0?userId=1&docId=1&device=610&bgString="";
 * */
function updateVideoDocBg_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    var bgString = retUtil.stringFromReq(req,"bgString");
    if(userId <= 0||docId <= 0 || bgString.length == 0){
        return retUtil.ret_err_json("参数错误",res);
    }
    //修改视频背景
    documentUtil.updateVideoDocBg_v1_0(userId,docId,bgString,function(err,res02){
        if(err){
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(res02,res);
    })
}
router.get('/updateVideoDocBg_v1_0', updateVideoDocBg_v1_0);
router.post('/updateVideoDocBg_v1_0', updateVideoDocBg_v1_0);


//===================================================================================
/**
 * 获取视频背景信息
 * @author 李强
 * @date 2017-11-20
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  docId : (作品唯一标识)
 * 返回 :    http://114.55.172.253:7000/mock/11/yjx/v1/document/getVideoDocBgInfo_v1_0
 * 测试地址： http://localhost:3000/yjx/v1/document/getVideoDocBgInfo_v1_0?userId=1&docId=1&device=610;
 * */
function getVideoDocBgInfo_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    if(userId <= 0||docId <= 0){
        return retUtil.ret_err_json("参数错误",res);
    }
    //修改视频背景
    documentUtil.getVideoDocBgInfo_v1_0(userId,docId,function(err,res02){
        if(err){
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(res02,res);
    })
}
router.get('/getVideoDocBgInfo_v1_0', getVideoDocBgInfo_v1_0);
router.post('/getVideoDocBgInfo_v1_0', getVideoDocBgInfo_v1_0);



//==============================================================================





/**
 * 获取模板收藏状态
 *
 * @author  毛凯
 * @date 2017-11-16
 *
 * 参数名称	是否必须	示例	备注
 * device	是
 *               610
 *               6 字段为 一键秀 相关标记
 *               600 一键秀网页端
 *               610 一键秀 android 端
 *               620 一键秀 iOS 端
 *               630 一键秀 嵌入网页端
 *               640 一键秀微信端
 *               650 一键秀小程序端
 * userId	是 299188 用户唯一标识
 * tmplId	是 789 模板唯一标识
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/27
 * 测试地址：http://localhost:3000/yjx/v1/document/getTmplCollectStatus_v1_0?device=6&userId=299188&tmplId=789
 */
function getTmplCollectStatus_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var tmplId = retUtil.numberFromReq(req, 'tmplId');
    if(device <= 0 || userId <= 0 || tmplId <= 0){
        return retUtil.ret_err_json('参数错误', res);
    }
    documentUtil.checkUserFavTmplState(userId,tmplId,function(err,result){
        if(err) {
            console.log('yjx/v1/document.js [getTmplCollectStatus_v1_0] checkUserFavTmplState error' + err);
            return retUtil.ret_err_json(err);
        }
        var data ={};
        data.isCollect= result > 0 ? 1 : 0;   // 0 标识未收藏, 1 标识已收藏
        return retUtil.ret_succ_json(data, res);
    })

}
router.get('/getTmplCollectStatus_v1_0',getTmplCollectStatus_v1_0);
router.post('/getTmplCollectStatus_v1_0',getTmplCollectStatus_v1_0);


/***
 * 获取某范围模板组内模板列表
 *
 * @author 王俊
 * @date 2017-11-16
 *
 * 参数: device	6 字段为 一键秀 相关标记
 *              600 一键秀网页端
 *              610 一键秀 android 端
 *              620 一键秀 iOS 端
 *              630 一键秀 嵌入网页端
 *              640 一键秀微信端
 *              650 一键秀小程序端
 * 参数: setIds	集合对应的 id数组的 json 字符串, 为空数组则认为参数异常
 * 参数: pageNum	页码
 * 参数: pageSize 页容量
 * 参数: withTotalPage 1 标识获取总页数, 未传递或者为0标识不获取总页数, 默认为0
 * 参数[可选]: tmplTypes 模板分类数组的 json 字符串, 0 代表普通模板, 10 代表 vip 模板, 不传默认为 [0], 标记只获取普通模板
 * 参数[可选]: durations 模板分类数组的 json 字符串, 1 代表0-10秒, 2 代表 11-30, 3代表 31-60   4代表61-90
 * 返回结果: 详情见 http://114.55.172.253:7000/project/11/interface/api/12
 * {
 *   "success" : 1,                  // 0 标识请求失败, 1 标识请求成功
 *   "msg" : "成功",                 // 如请求失败, 则为失败原因
 *   "data" : {
 *       "list" : [
 *           {
 *               "id":1999,
 *               "opType":1,         // 业务分类 暂定如下: 1 竖屏类型(单页/印品), 2 视频类型, 3 ppt 类型
 *               "typeDesc":"优惠券",
 *               "name":"创意少儿书法培训优惠券",
 *               "thumb":"http://itbour-generate.oss-cn-hangzhou.aliyuncs.com/image/U408535/2017/11/07/143418993_uEuOZh77Qw0kIiwtXmCQ/0.jpg",
 *               "useCounts":3697,
 *               "w":1537,
 *               "h":496,
 *               "author":"李国梅",
 *               "time":"2017-11-05 13:42:41",
 *           }
 *       ],
 *       "totalPage":10,             // 如获取总页数, 则返回此字段
 *   }
 * }
 * 测试地址: http://localhost:3000/yjx/v1/document/getTmplSetContent_v1_0?device=610&setIds=[1,2,3,4,5]&pageNum=0&pageSize=12&withTotalPage=1
 */
function getTmplSetContent_v1_0(req, res, next) {
    var device = retUtil.numberFromReq(req, 'device');
    var setIds = retUtil.arrayFromReq(req,'setIds');
    var pageNum = retUtil.numberFromReq(req, 'pageNum');
    var pageSize = retUtil.numberFromReq(req, 'pageSize') || 12;    // 默认12条
    var withTotalPage = retUtil.numberFromReq(req, 'withTotalPage');
    // industrySetIds
    var industrySetIds = retUtil.arrayFromReq(req, 'industrySetIds') || []; // 行业分类
    if(!setIds || setIds.length <= 0) {
        return retUtil.ret_err_json('参数错误', res);
    }
    var tmplTypes = retUtil.arrayFromReq(req, 'tmplTypes') || [0,10];   // 默认只获取免费模板
    var durations = retUtil.arrayFromReq(req, 'durations') || [1];      // 默认只获取10s, 避免老 app 生成较长作品
    var sizeIds = retUtil.arrayFromReq(req, 'sizeIds') || [90];         // 默认只获取16:9的模板

    documentUtil.getTmplSetContentList_v1_0(setIds, tmplTypes,pageNum, pageSize, withTotalPage,durations,industrySetIds, sizeIds, function (getListErr, data) {
        console.log('documentUtil.getTmplSetContentList_v1_0 callback');
        if (getListErr) {
            console.log('yjx/v1/document.js [getTmplSetContent_v1_0] getTmplSetContentList_v1_0 getListErr'+getListErr);
            return retUtil.ret_err_json(getListErr, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getTmplSetContent_v1_0', getTmplSetContent_v1_0);
router.post('/getTmplSetContent_v1_0', getTmplSetContent_v1_0);


/**
 * 获取模板预览详细信息
 *
 * @author 王俊
 * @date 2017-11-17
 *
 * 参数: device 6 字段为 一键秀 相关标记
 *              600 一键秀网页端
 *              610 一键秀 android 端
 *              620 一键秀 iOS 端
 *              630 一键秀 嵌入网页端
 *              640 一键秀微信端
 *              650 一键秀小程序端
 * 参数: id 统一模板标识
 *
 * 返回结果: 参见接口: http://114.55.172.253:7000/project/11/interface/api/13
 *
 * 测试地址: http://localhost:3000/yjx/v1/document/getTmplDetail_v1_0?device=610&id=123
 */
function getTmplDetail_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var id = retUtil.numberFromReq(req, 'id');
    var needSetName = retUtil.numberFromReq(req, 'needSetName') || 0;

    var uri = '/yjx/v1/document/getTmplDetail_v1_0';
    var para = {
        id : id,
        needSetName : needSetName
    };
    staticizeUtil.getCacheDataByRedis(uri,para, function (error, content) {
        if(content && CONFIG.DEBUG !== 1) {
            return retUtil.ret_succ_json(content, res);
        }
        documentUtil.getTmplDetail_v1_0(id,needSetName,function (error, data) {
            if(error) {
                console.log('yjx/v1/document.js [getTmplDetail_v1_0] error: ' + error);
                return retUtil.ret_err_json(error, res);
            }
            // 记录至缓存中
            staticizeUtil.recordDataByRedis(uri, para, data);
            return retUtil.ret_succ_json(data, res);
        });
    });
}
router.get('/getTmplDetail_v1_0', getTmplDetail_v1_0);
router.post('/getTmplDetail_v1_0', getTmplDetail_v1_0);


/**
 * 获取模板/作品核心数据结构
 *
 * @author 王俊
 * @date 2017-11-17
 *
 * 参数: device    6 字段为 一键秀 相关标记
 *                600 一键秀网页端
 *                610 一键秀 android 端
 *                620 一键秀 iOS 端
 *                630 一键秀 嵌入网页端
 *                640 一键秀微信端
 *                650 一键秀小程序端
 * 参数: userId   用户唯一标识
 * 参数: id       模板/作品唯一标识
 * 参数: isTmpl   0/1, id 是模板还是作品的标记, 1 标记为模板, 0 标记作品
 *
 * 返回值参见接口: http://114.55.172.253:7000/project/11/interface/api/43
 *
 * 测试地址: http://localhost:3000/yjx/v1/document/getDocContent_v1_0?device=610&userId=299188&id=1&isTmpl=1
 */
function getDocContent_v1_0(req, res, next) {
    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var id = retUtil.numberFromReq(req, 'id');
    var isTmpl = retUtil.numberFromReq(req, 'isTmpl');

    if (userId <=0 || id <=0 || isTmpl <0) {
        return retUtil.ret_err_json('参数错误', res);
    }

    // 模板数据查询
    if(isTmpl) {
        // 模板核心数据若有缓存则优先使用缓存
        var uri = '/yjx/v1/document/getDocContent_v1_0';
        var para = {id : id, isTmpl : isTmpl};
        staticizeUtil.getCacheDataByRedis(uri, para, function (error, content) {
            if(content && CONFIG.DEBUG !== 1) {
                return retUtil.ret_succ_json(content, res);
            }
            documentUtil.getTmplDocContent_v1_0(id, function (getTmplErr, data) {
                if(getTmplErr) {
                    console.log('yjx/v1/document.js [getDocContent_v1_0] getTmplErr: ' + getTmplErr);
                    return retUtil.ret_err_json(getTmplErr, res);
                }
                data.docId = 0;
                data.docString = JSON.stringify(data.docString || {});
                // 缓存核心数据至 redis
                staticizeUtil.recordDataByRedis(uri, para, data);
                return retUtil.ret_succ_json(data, res);
            });
        });
        return;
    }

    // 作品数据查询
    documentUtil.getUserDocContent_v1_0(id, userId, function (getUserDocErr, data) {
        if(getUserDocErr) {
            console.log('yjx/v1/document.js [getDocContent_v1_0] getUserDocErr: ' + getUserDocErr);
            return retUtil.ret_err_json(getUserDocErr, res);
        }
        data.docTmlId = data.tmplId;
        data.tmplId = 0;
        data.docString = JSON.stringify(data.docString || {});
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getDocContent_v1_0', getDocContent_v1_0);
router.post('/getDocContent_v1_0', getDocContent_v1_0);


/**
 * 获取作品核心数据拷贝
 *
 * @author 王俊
 * @date 2017-11-18
 *
 * device	610
 *          6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * userId	299188 用户唯一标识
 * docId	989 用户作品唯一标识
 *
 * 返回值参照: http://114.55.172.253:7000/project/11/interface/api/100
 * 测试地址: http://localhost:3000/yjx/v1/document/getUserDocCopyTmpl_v1_0?device=610&userId=299188&docId=1
 */

function getUserDocCopyTmpl_v1_0(req, res, next) {
    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');

    if (userId <=0 || docId <= 0) {
        return retUtil.ret_err_json('参数错误', res);
    }

    documentUtil.getUserDocCopyTmpl_v1_0(docId, userId, function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [getUserDocCopyTmpl_v1_0] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        data.docString = JSON.stringify(data.docString || {});
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserDocCopyTmpl_v1_0', getUserDocCopyTmpl_v1_0);
router.post('/getUserDocCopyTmpl_v1_0', getUserDocCopyTmpl_v1_0);


/**
 * 获取文字的轮廓信息
 *
 * @author 严旭东
 * @date 2017-11-18
 *
 * device	610
 *          6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * texts    文字索引信息, 从微调库中获取
 *
 * 返回值参照: http://114.55.172.253:7000/project/11/interface/api/109
 * 测试地址: http://localhost:3000/yjx/v1/document/getContourOfTexts_v1_0?device=610&texts=[{"id":6,"fz":3200,"te":" 默认文字","style":{"fn":"文泉驿等宽正黑","fs":36.00,"bi":0,"po":1,"vpo":2,"cs":0.00,"ls":10.00,"td":0,"min":1,"max":100,"force":0}}]
 */

function getContourOfTexts_v1_0(req, res, next) {
    var device =retUtil.numberFromReq(req,'device');
    var texts = retUtil.stringFromReq(req,'texts');
    if(!texts || texts.length === 0){
        return retUtil.ret_err_json(CODE.TEXT_PARA_EMPTY,res);
    }

    rpcFunc.contourOfTexts(texts,function(error, ret){
        if(error){
            return retUtil.ret_err_json(error,res);
        }
        return retUtil.ret_succ_json({"texts":ret},res);
    })
}
router.get('/getContourOfTexts_v1_0', getContourOfTexts_v1_0);
router.post('/getContourOfTexts_v1_0', getContourOfTexts_v1_0);


/**
 * 创建作品
 *
 * @author 王俊
 * @date 2017-11-19
 *
 * 参数: device       6 字段为 一键秀 相关标记
 *                   600 一键秀网页端
 *                   610 一键秀 android 端
 *                   620 一键秀 iOS 端
 *                   630 一键秀 嵌入网页端
 *                   640 一键秀微信端
 *                   650 一键秀小程序端
 * 参数: tmplId       统一模板唯一标识
 * 参数: userId       用户唯一标识
 * 参数: docString    文档核心结构, 结构为: 获取模板/作品核心数据结构 getDocContent_v1_0 接口返回值
 *
 * 返回值: {
 *           "success" : 1,                  // 0 标识请求失败, 1 标识请求成功
 *           "msg" : "成功",                 // 如请求失败, 则为失败原因
 *           "data" : {
 *               "docId" : 878,              // 创建的作品唯一标识
 *               "opType" : 1                // 业务分类 暂定如下: 1 竖屏类型(单页/印品), 2 视频类型, 3 ppt 类型
 *           }
 *        }
 * 详情参见接口: http://114.55.172.253:7000/project/11/interface/api/14
 * 测试地址: http://localhost:3000/yjx/v1/document/newUserDoc_v1_0?device=1&tmplId=1&userId=299188&docString={}
 * */
function newUserDoc_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var tmplId = retUtil.numberFromReq(req, 'tmplId');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docString = retUtil.stringFromReq(req, 'docString');

    if(tmplId <= 0 || userId <= 0 || !docString || docString.length <2) {
        return retUtil.ret_err_json('参数错误', res);
    }

    documentUtil.newUserDoc_v1_0(userId, tmplId, docString, function (error, data) {
        if (error) {
            console.log('yjx/v1/document.js [newUserDoc_v1_0] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });

}
router.get('/newUserDoc_v1_0', newUserDoc_v1_0);
router.post('/newUserDoc_v1_0', newUserDoc_v1_0);

/**
 * 修改用户作品
 *
 * @author 王俊
 * @date 2017-11-19
 *
 * 参数: device       6 字段为 一键秀 相关标记
 *                   600 一键秀网页端
 *                   610 一键秀 android 端
 *                   620 一键秀 iOS 端
 *                   630 一键秀 嵌入网页端
 *                   640 一键秀微信端
 *                   650 一键秀小程序端
 * 参数: docId       统一作品唯一标识
 * 参数: userId      用户唯一标识
 * 参数: docString   文档核心结构, 结构为: 获取模板/作品核心数据结构 getDocContent_v1_0 接口返回值
 *
 * 返回值: {
 *           "success" : 1,                  // 0 标识请求失败, 1 标识请求成功
 *           "msg" : "成功",                 // 如请求失败, 则为失败原因
 *           "data" : {
 *               "docId" : 878,              // 创建的作品唯一标识
 *               "opType" : 1                // 业务分类 暂定如下: 1 竖屏类型(单页/印品), 2 视频类型, 3 ppt 类型
 *           }
 *        }
 * 详情参见接口: http://114.55.172.253:7000/project/11/interface/api/14
 * 测试地址: http://localhost:3000/yjx/v1/document/updateUserDoc_v1_0?device=1&docId=1&userId=299188&docString={}
 * */
function updateUserDoc_v1_0(req, res, next) {
    var device = retUtil.numberFromReq(req, 'device');
    var docId = retUtil.numberFromReq(req, 'docId');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docString = retUtil.stringFromReq(req, 'docString');

    if(docId <= 0 || userId <= 0 || !docString || docString.length <2) {
        return retUtil.ret_err_json('参数错误', res);
    }

    documentUtil.updateUserDoc_v1_0(userId, docId, docString, function (error, data) {
        if (error) {
            console.log('yjx/v1/document.js [updateUserDoc_v1_0] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });

}
router.get('/updateUserDoc_v1_0', updateUserDoc_v1_0);
router.post('/updateUserDoc_v1_0', updateUserDoc_v1_0);

/**
 * 获取作品预览(如果没有排版则排版作品)
 *
 * @author 王俊
 * @date 2017-11-19
 *
 * 参数: device       6 字段为 一键秀 相关标记
 *                   600 一键秀网页端
 *                   610 一键秀 android 端
 *                   620 一键秀 iOS 端
 *                   630 一键秀 嵌入网页端
 *                   640 一键秀微信端
 *                   650 一键秀小程序端
 * 参数: userId       用户唯一标识
 * 参数: docId        用户统一作品唯一标识
 *
 * 返回结果: 参见接口: http://114.55.172.253:7000/project/11/interface/api/46
 * 测试地址: http://localhost:3000/yjx/v1/document/getDocPreview_v1_0?device=610&userId=299188&docId=18
 * */
function getDocPreview_v1_0(req, res, next) {

    var device  = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');

    documentUtil.getDocPreview_v1_0(userId, docId, function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [getDocPreview_v1_0] error: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getDocPreview_v1_0', getDocPreview_v1_0);
router.post('/getDocPreview_v1_0', getDocPreview_v1_0);

/**
 * 获取 PPT 保留页信息
 *
 * @author 严旭东
 * @date 2017-11-20
 * device	610
 *          6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * tmplId 模板 id
 *
 * 返回值参照: http://114.55.172.253:7000/project/11/interface/api/85
 * 测试地址: http://localhost:3000/yjx/v1/document/getPptBackupPage_v1_0?tmplId=4232
 */

function getPptBackupPage_v1_0(req, res, next) {
    var tmplId = retUtil.numberFromReq(req,'tmplId');
    var device = retUtil.numberFromReq(req,'device');
    if(tmplId<=0){
        return retUtil.ret_err_json('参数错误',res);
    }
    documentUtil.getPptBackupPage_v1_0(tmplId,function(err,data){
        if(err){
            console.log('yjx/v1/document.js [getPptBackupPage_v1_0] err: ' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/getPptBackupPage_v1_0', getPptBackupPage_v1_0);
router.post('/getPptBackupPage_v1_0', getPptBackupPage_v1_0);

/**
 *
 * 获取作品下载地址
 *
 *
 * @author  王俊
 * @date 2017-11-21
 *
 * device	是 610      6 字段为 一键秀 相关标记
 *                      600 一键秀网页端
 *                      610 一键秀 android 端
 *                      620 一键秀 iOS 端
 *                      630 一键秀 嵌入网页端
 *                      640 一键秀微信端
 *                      650 一键秀小程序端
 * userId	是 299188 用户唯一标识
 * docId	是 989 用户作品唯一标识
 * downloadType 1. 下载视频带背景(若有背景), 2 仅下载小视频, 默认为1, 下载带背景的视频, 注意:  当作品没有背景时此字段无效
 * quality	否 1  下载文件质量
 *                  1. 低质量
 *                  2. 标准质量
 *                  3. 高质量
 *                  4. 超高质量
 * 返回结果: 参见接口: http://114.55.172.253:7000/project/11/interface/api/49
 * 测试地址:
 * {
 *   "success" : 1,                  // 0 标识请求失败, 1 标识请求成功
 *   "msg" : "成功",                 // 如请求失败, 则为失败原因
 *   "data" : {
 *       "docId" : 989,
 *       "opType" : 1,               // 业务分类, 暂定如下: 1 竖屏(单页/印品等)  2 视频  3 PPT
 *       "fileSize" : 989889,        // 文件大小, 单位: byte  换算时使用1000做转换, 避免与运营商统计不一致
 *       "downloadUrls" : [          // 作品下载地址(可能是图片, 可能是视频等)
 *           "http://itbour-user.oss-cn-hangzhou.aliyuncs.com/image/Unull/2017/10/31/154053345_wvk4TknmHKww7HztThwx.jpg",
 *           "http://itbour-user.oss-cn-hangzhou.aliyuncs.com/image/Unull/2017/10/31/154053345_wvk4TknmHKww7HztThwx.jpg"
 *       ]
 *      }
 * }
 * 测试地址: http://localhost:3000/yjx/v1/document/getDocDownloadUrl_v1_0?device=610&userId=299188&docId=11&quality=1
 */
function getDocDownloadUrl_v1_0(req, res, next) {

    var device  = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');
    var quality = retUtil.numberFromReq(req, 'quality');
    var downloadType = retUtil.numberFromReq(req, 'downloadType');
    if(userId <=0 || docId <=0) {
        return retUtil.ret_err_json('参数错误', res);
    }

    documentUtil.getDocDownloadUrl_v1_0(userId, docId, quality, downloadType,function (err, data) {
        if(err) {
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getDocDownloadUrl_v1_0', getDocDownloadUrl_v1_0);
router.post('/getDocDownloadUrl_v1_0', getDocDownloadUrl_v1_0);

/**
 * 获取 PPT 指定页内容
 *
 * @author 严旭东
 * @date 2017-11-20
 * device	610
 *          6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * base_doc_id 模板 ppt 保留页内返回的 base_doc_id
 * base_page_id ppt 保留页内返回的 base_page_id
 *
 * 返回值参照: http://114.55.172.253:7000/project/11/interface/api/88
 * 测试地址: http://localhost:3000/yjx/v1/document/getPptPageConent_v1_0?base_doc_id=23&base_page_id=106144
 */
function getPptPageConent_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var base_doc_id = retUtil.numberFromReq(req,'base_doc_id');
    var base_page_id = retUtil.numberFromReq(req,'base_page_id');
    if(base_doc_id<=0||base_page_id<=0){
        return retUtil.ret_err_json('参数错误',res)
    }
    documentUtil.getPptPageConent_v1_0(base_page_id,function(err,data){
        if(err){
            console.log('yjx/v1/document.js [getPptPageConent_v1_0] err: ' + err);
            return retUtil.ret_err_json(err,res)
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/getPptPageConent_v1_0', getPptPageConent_v1_0);
router.post('/getPptPageConent_v1_0', getPptPageConent_v1_0);




/**
 * 获取模板默认轮廓信息
 *
 * @author 严旭东
 * @date 2017-11-20
 * device	610
 *          6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * tmplId 模板唯一标识
 *
 * 返回值参照: http://114.55.172.253:7000/project/11/interface/api/112
 * 测试地址: http://localhost:3000/yjx/v1/document/getTmplDefaultContour_v1_0?device=610&tmplId=7
 */
function getTmplDefaultContour_v1_0(req, res, next) {
    var device = retUtil.numberFromReq(req,'device');
    var tmplId = retUtil.numberFromReq(req, "tmplId");
    if(tmplId <= 0) {
        return retUtil.ret_err_json('参数错误',res)
    }
    var uri = '/yjx/v1/document/getTmplDefaultContour_v1_0';
    var designId;
    var para = {
        tmplId : tmplId
    };

    // 先从 redis 获取缓存, 若存在, 则直接返回, 不存在, 获取并设置缓存
    staticizeUtil.getCacheDataByRedis(uri, para, function(error, content){
        if(content){
            return tg3Util.ret_func_json(1,CODE.OPERATION_SUCCESS,{"texts":content}, res);
        }

        documentUtil.getChildTmplId(tmplId,function(err,designId){
            if(err){
                return retUtil.ret_err_json(err,res)
            }
            // 1. 根据 designId 获取模板各页轮廓索引信息
            tg3Util.getTextInfoByDesignId(designId, function(textErr, texts){

                if(textErr) {
                    console.log("font.js [getTmplDefaultContour_v1_0] getTextInfoByDesignId err: "+ textErr);
                    return tg3Util.ret_func_json(0,CODE.OPERATION_FAILED,{}, res);
                }
                // 2. 准备获取各页文字轮廓信息的方法数组
                var asynFuncs = [];
                for(var i=0; i < texts.length; i++) {
                    asynFuncs.push((function(index, text){
                        var obj = {pageIndex : i};

                        return function(asyncCallback) {
                            text = JSON.stringify(text);
                            rpcFunc.contourOfTexts(text,function(error, ret){
                                obj.contours = ret;
                                asyncCallback(error, obj);
                            });
                        }
                    })(i, texts[i]));
                }
                // 3. 异步取得所有页轮廓信息
                async.parallel(asynFuncs, function(asyErr, result){
                    if(asyErr) {
                        console.log('font [getTmplDefaultContour_v1_0] contourOfTexts err: ' + asyErr);
                        return tg3Util.ret_func_json(0,CODE.OPERATION_FAILED,{}, res);
                    }
                    var content = staticizeUtil.recordDataByRedis(uri, para, result);  // 缓存
                    return tg3Util.ret_func_json(1,CODE.OPERATION_SUCCESS,{"texts":content}, res);
                });
            });
        });
    });
}
router.get('/getTmplDefaultContour_v1_0', getTmplDefaultContour_v1_0);
router.post('/getTmplDefaultContour_v1_0', getTmplDefaultContour_v1_0);

/**
 * 去除作品水印
 *
 * @author 王俊
 * @date 2017-11-21
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数: docId            统一作品标识
 * 返回结果: 与作品预览接口相同, 参见 http://114.55.172.253:7000/project/11/interface/api/97
 */
function removeWatermark_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');
    if(userId <= 0|| docId <= 0) {
        return retUtil.ret_err_json('参数错误', res);
    }

    documentUtil.removeWatermark_v1_0(userId, docId, function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [removeWatermark_v1_0] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/removeWatermark_v1_0', removeWatermark_v1_0);
router.post('/removeWatermark_v1_0', removeWatermark_v1_0);

/**
 * 修改表单使用状态
 *
 * @author 毛凯
 * @date 2017-12-12
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数: docId            用户统一作品id
 * 参数：fromState        1:使用表单(开启), 2:使用表单(关闭)'
 * 返回结果: 参见 http://114.55.172.253:7000/project/11/interface/api/381
 * 测试地址：http://localhost:3000/yjx/v1_0_0/document/changeFromState_v1_0?device:610&userId=299188&docId=4&formState=1
 */
function changeFormState_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');
    var formState = retUtil.numberFromReq(req, 'formState');
    if(userId <= 0|| docId <= 0 || formState > 2 || formState < 1) {
        return retUtil.ret_err_json('参数错误', res);
    }
    documentUtil.changeFormState_v1_0(userId,docId,formState,function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [changeFromState_v1_0] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/changeFormState_v1_0', changeFormState_v1_0);
router.post('/changeFormState_v1_0', changeFormState_v1_0);

/**
 * 获取作品表单信息
 *
 * @author 毛凯
 * @date 2017-12-12
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数: docId            用户统一作品id
 * 参数：fromState        1:使用表单(开启), 2:使用表单(关闭)'
 * 返回结果: 参见 http://114.55.172.253:7000/project/11/interface/api/381
 * 测试地址：http://localhost:3000/yjx/v1/document/getDocFormInfo_v1_0?device:610&userId=299188&docId=4
 */
function getDocFormInfo_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');
    if(userId <= 0|| docId <= 0) {
        return retUtil.ret_err_json('参数错误', res);
    }
    documentUtil.getDocFormInfo_v1_0(userId,docId,function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [getDocFromInfo_v1_0] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getDocFormInfo_v1_0', getDocFormInfo_v1_0);
router.post('/getDocFormInfo_v1_0', getDocFormInfo_v1_0);

/**
 * 获取作品表单信息
 *
 * @author 毛凯
 * @date 2017-12-12
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数: docId            用户统一作品id
 * 参数：fromInfo        表单信息的json字符串   "{"form_name":"我要报名",'key1':'姓名','value1':'李强强'}"
 * 参数：fromId          1  反馈模版唯一标识
 * 返回结果: 参见 http://114.55.172.253:7000/project/11/interface/api/381
 * 测试地址：http://localhost:3000/yjx/v1/document/submitFormInfo_v1_0?device:610&userId=299188&docId=4&fromInfo={'key1':'姓名','value1':'王俊俊'}&fromId=1
 */
function submitFormInfo_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');
    var json = retUtil.stringFromReq(req, 'formInfo');
    var formInfo = retUtil.safe_parser_JSON_string(json);
    var formId =  retUtil.numberFromReq(req, 'formId');
    if(userId <= 0|| docId <= 0 || !formInfo ) {
        return retUtil.ret_err_json('参数错误', res);
    }
    documentUtil.submitFormInfo_v1_0(userId,docId,formInfo,formId,function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [submitFormInfo_v1_0] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/submitFormInfo_v1_0', submitFormInfo_v1_0);
router.post('/submitFormInfo_v1_0', submitFormInfo_v1_0);



/**
 * 获取背景模板/视频作品背景信息_APP_v1_2
 *
 * @author 毛凯
 * @date 2018-1-22
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数：isTmpl          是否为视频背景的模板唯一标识, 0 标记不是, 1 标记是, 默认为0
 * 参数：docId          用户作品唯一标识/视频背景模板的唯一标识
 * 返回结果: 参见 http://114.55.172.253:7000/project/11/interface/api/965
 * 测试地址：http://localhost:3000/yjx/v1/document/getVideoBgInfo_v1_2?device:610&userId=299188&docId=4&isTmpl=0/1
 */
function getVideoBgInfo_v1_2(req, res, next) {
    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var isTmpl = retUtil.numberFromReq(req,"isTmpl");
    var docId = retUtil.numberFromReq(req,"docId");
    if(userId <= 0||docId <= 0 || isTmpl < 0 || device <= 0){
        return retUtil.ret_err_json("参数错误",res);
    }
    if(isTmpl){
        documentUtil.getDesignDocContent(userId,docId, function (getBgInfoErr, data){
            if(getBgInfoErr){
                console.log('yjx/v1/document.js [getDesignDocContent] getTmplErr: ' + getBgInfoErr);
                return retUtil.ret_err_json(getBgInfoErr, res);
            }
            return retUtil.ret_succ_json(data, res);
        });
        return;
    }
    documentUtil.getVideoBgInfo_v1_2(userId,docId, function (getVideoDocBgInfoErr, data) {
        if (getVideoDocBgInfoErr) {
            console.log('yjx/v1/document.js [getVideoDocBgInfo_v1_0] getTmplErr: ' + getVideoDocBgInfoErr);
            return retUtil.ret_err_json(getVideoDocBgInfoErr, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getVideoBgInfo_v1_2', getVideoBgInfo_v1_2);
router.post('/getVideoBgInfo_v1_2', getVideoBgInfo_v1_2);





/**
 * 新建/修改视频作品背景_APP_v1_2
 *
 * @author 毛凯
 * @date 2018-1-22
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数: docId            用户统一作品id
 * 参数：bgId              视频背景模板唯一标识 uni_item_id
 * 参数：bgString          背景 json 字符串
 * 返回结果: 参见 http://114.55.172.253:7000/project/11/interface/api/956
 * 测试地址：http://localhost:3000/yjx/v1/document/updateVideoDocBg_v1_2?device:610&userId=299188&docId=4&bgId=123&bgString=""
 */
function updateVideoDocBg_v1_2(req, res, next) {
    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    var bgTmplId = retUtil.numberFromReq(req,"bgId");
    var bgString = retUtil.stringFromReq(req,"bgString");
    if(userId <= 0||docId <= 0 || bgString.length == 0 || bgTmplId<=0){
        return retUtil.ret_err_json("参数错误",res);
    }
    documentUtil.updateVideoDocBg_v1_2(userId,docId,bgTmplId,bgString,function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [updateVideoDocBg_v1_2] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/updateVideoDocBg_v1_2', updateVideoDocBg_v1_2);
router.post('/updateVideoDocBg_v1_2', updateVideoDocBg_v1_2);

/***
 * 获取某范围模板组内模板列表(可搜索)
 *
 * @author 毛凯
 * @date 2018-1-31
 *
 * 参数: device	6 字段为 一键秀 相关标记
 *              600 一键秀网页端
 *              610 一键秀 android 端
 *              620 一键秀 iOS 端
 *              630 一键秀 嵌入网页端
 *              640 一键秀微信端
 *              650 一键秀小程序端
 * 参数: setIds	集合对应的 id数组的 json 字符串, 为空数组则认为参数异常
 * 参数: keyword 去表情换行等特殊字符, 字符数0-30, 若为空字符串则此条件失效, 默认为空字符串
 * 参数: pageNum	页码
 * 参数: pageSize 页容量
 * 参数: withTotalPage 1 标识获取总页数, 未传递或者为0标识不获取总页数, 默认为0
 * 参数[可选]: tmplTypes 模板分类数组的 json 字符串, 0 代表普通模板, 10 代表 vip 模板, 不传默认为 [0], 标记只获取普通模板
 * 参数[可选]: durations 模板分类数组的 json 字符串, 1 代表0-10秒, 2 代表 11-30, 3代表 31-60   4代表61-90
 * 返回结果: 详情见 http://114.55.172.253:7000/project/11/interface/api/12
 * {
 *   "success" : 1,                  // 0 标识请求失败, 1 标识请求成功
 *   "msg" : "成功",                 // 如请求失败, 则为失败原因
 *   "data" : {
 *       "list" : [
 *           {
 *               "id":1999,
 *               "opType":1,         // 业务分类 暂定如下: 1 竖屏类型(单页/印品), 2 视频类型, 3 ppt 类型
 *               "typeDesc":"优惠券",
 *               "name":"创意少儿书法培训优惠券",
 *               "thumb":"http://itbour-generate.oss-cn-hangzhou.aliyuncs.com/image/U408535/2017/11/07/143418993_uEuOZh77Qw0kIiwtXmCQ/0.jpg",
 *               "useCounts":3697,
 *               "w":1537,
 *               "h":496,
 *               "author":"李国梅",
 *               "time":"2017-11-05 13:42:41",
 *           }
 *       ],
 *       "totalPage":10,             // 如获取总页数, 则返回此字段
 *   }
 * }
 * 测试地址: http://localhost:3000/yjx/v1/document/getTmplSetContentForWeb_v1_0?device=610&setIds=[1,2,3,4,5]&pageNum=0&pageSize=12&withTotalPage=1
 */
function getTmplSetContentForWeb_v1_0(req, res, next) {
    var device = retUtil.numberFromReq(req, 'device');
    var setIds = retUtil.arrayFromReq(req,'setIds');
    var keyword = retUtil.stringFromReq(req, 'keyword') || "";
    var pageNum = retUtil.numberFromReq(req, 'pageNum');
    var pageSize = retUtil.numberFromReq(req, 'pageSize') || 12;    // 默认12条
    var withTotalPage = retUtil.numberFromReq(req, 'withTotalPage') || 0;
    var tmplTypes = retUtil.arrayFromReq(req, 'tmplTypes') || [0];
    var durations = retUtil.arrayFromReq(req, 'durations') || [];  // 避免老 app 使用过长模板
    var sizeIds = retUtil.arrayFromReq(req, 'sizeIds') || [90];
    if(!setIds || setIds.length <= 0) {
        return retUtil.ret_err_json('参数错误', res);
    }
    if(keyword && keyword.length >=40) {
        return retUtil.ret_err_json('keyword过长 参数错误', res);
    }
    if (device == 600){
        sizeIds = [90];
    }
    //过滤参数中的特殊字符
    var pattern = new RegExp("[`~!@#$^&*%()=|{}':;',\\[\\].<>/?~！@#￥……&*（）——|{}【】‘；：”“'。，、？]");
    var keywordRs = "";
    for(var i = 0; i < keyword.length; i++) {
        keywordRs += keyword.substr(i, 1).replace(pattern, '');
    }

    documentUtil.getTmplSetContentForWeb_v1_0(setIds, tmplTypes, keywordRs,pageNum, pageSize, withTotalPage,durations,sizeIds,function (getListErr, data) {
        console.log('documentUtil.getTmplSetContentForWeb_v1_0 callback');
        if (getListErr) {
            console.log('yjx/v1/document.js [getTmplSetContentForWeb_v1_0] getTmplSetContentList_v1_0 getListErr'+getListErr);
            return retUtil.ret_err_json(getListErr, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getTmplSetContentForWeb_v1_0', getTmplSetContentForWeb_v1_0);
router.post('/getTmplSetContentForWeb_v1_0', getTmplSetContentForWeb_v1_0);

/**
 * 设置/更新视频作品封面_APP_1_3
 *
 * @author 毛凯
 * @date 2018-3-1
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数: docId            用户统一作品id
 * 参数：coverTime        用户选择的视频封面帧对应到视频中的时刻(减去封面时长)
 * 返回结果: 参见 http://114.55.172.253:7000/project/11/interface/api/1214
 * 测试地址：http://localhost:3000/yjx/v1/document/setVideoUserDocCover_v1_3
 */
function setVideoUserDocCover_v1_3(req, res, next) {
    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    var coverTime = retUtil.numberFromReq(req,"coverTime");
    if(userId <= 0|| docId <= 0 || coverTime<0){
        return retUtil.ret_err_json("参数错误",res);
    }
    documentUtil.setVideoUserDocCover_v1_3(userId,docId,coverTime,function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [setVideoUserDocCover_v1_3] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/setVideoUserDocCover_v1_3', setVideoUserDocCover_v1_3);
router.post('/setVideoUserDocCover_v1_3', setVideoUserDocCover_v1_3);

/**
 * 删除视频作品封面_APP_1_3
 *
 * @author 毛凯
 * @date 2018-3-1
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数: docId            用户统一作品id
 * 返回结果: 参见 http://114.55.172.253:7000/project/11/interface/api/1220
 * 测试地址：http://localhost:3000/yjx/v1/document/removeVideoUserDocCover_v1_3
 */
function removeVideoUserDocCover_v1_3(req, res, next) {
    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    if(userId <= 0|| docId <= 0){
        return retUtil.ret_err_json("参数错误",res);
    }
    documentUtil.removeVideoUserDocCover_v1_3(userId,docId,function (error, data) {
        if(error) {
            console.log('yjx/v1/document.js [removeVideoUserDocCover_v1_3] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/removeVideoUserDocCover_v1_3', removeVideoUserDocCover_v1_3);
router.post('/removeVideoUserDocCover_v1_3', removeVideoUserDocCover_v1_3);

/**
 * 删除视频作品封面_APP_1_3
 *
 * @author 王俊
 * @date 2018-03-05
 *
 * 参数: device           6 字段为 一键秀 相关标记
 *                       600 一键秀网页端
 *                       610 一键秀 android 端
 *                       620 一键秀 iOS 端
 *                       630 一键秀 嵌入网页端
 *                       640 一键秀微信端
 *                       650 一键秀小程序端
 *
 * 参数: userId           用户唯一标识
 * 参数: docId            用户统一作品id
 * 返回结果: 参见 http://yapi.yijianxiu.com:7000/project/11/interface/api/1238
 */
function getDocCurrentStatus_v1_3(req, res, next) {
    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    if(userId <= 0|| docId <= 0){
        return retUtil.ret_err_json("参数错误",res);
    }

    documentUtil.getDocCurrentStatus_v1_3(userId, docId, function (error, status) {

        if(error) {
            console.log('yjx/v1/document.js [getDocCurrentStatus_v1_3] err: ' + error);
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(status, res);

    });
}
router.get('/getDocCurrentStatus_v1_3', getDocCurrentStatus_v1_3);
router.post('/getDocCurrentStatus_v1_3', getDocCurrentStatus_v1_3);

/*
* 请求用户视频作品预览_WEB_1_1 添加
*
* @author 王俊
* @date 2018-03-26
*
* 参数: device    设备标识
* 参数: userId    用户唯一标识
* 参数: docId     用户作品 id
*
* 参考接口: http://yapi.yijianxiu.com:7000/project/11/interface/api/2308
* */
function requestUserDocPrivewInfo_web_v1_1(req, res, next) {

    var device = retUtil.numberFromReq(req,"device");
    var userId = retUtil.numberFromReq(req,"userId");
    var docId = retUtil.numberFromReq(req,"docId");
    if (userId <=0 || docId <=0) {
        return retUtil.ret_err_json('参数错误', res);
    }
    var wait = retUtil.numberFromReq(req,'wait');

    var opt = {
        uniDocId : Number(docId),
        userId : Number(userId),
        wait : Number(wait),
        device : Number(device)
    };
    documentUtil.requestUserDocPrivewInfo_web_v1_1(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });

}
router.get('/requestUserDocPrivewInfo_web_v1_1', requestUserDocPrivewInfo_web_v1_1);
router.post('/requestUserDocPrivewInfo_web_v1_1', requestUserDocPrivewInfo_web_v1_1);


/*
* 创建自由创建视频作品
*
* @author 王俊
* @date 2018-07-04
*
* 参数: device            设备标识,
* 参数: userId            用户唯一标识
* 参数: docString         自由创建文档的 json 字符串
* 参数: sizeId            自由创建作品的尺寸标识
*
* 详情见接口定义: http://yapi.yijianxiu.com:7000/project/11/interface/api/3811
* */
function newCustomVideoDoc_app_v3_0(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docString = retUtil.stringFromReq(req, 'docString');
    var sizeId = retUtil.numberFromReq(req, 'sizeId');
    if(userId <=0 || sizeId <=0 || !docString || docString.length <= 2) {
        return retUtil.ret_err_json('参数错误', res);
    }

    var opt = {
        device : device,
        userId : userId,
        docString : docString,
        sizeId : sizeId
    };
    documentUtil.newCustomVideoDoc_app_v3_0(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/newCustomVideoDoc_app_v3_0', newCustomVideoDoc_app_v3_0);
router.post('/newCustomVideoDoc_app_v3_0', newCustomVideoDoc_app_v3_0);


/*
* 修改自由创建视频作品
*
* @author 王俊
* @date 2018-07-04
*
* 参数: device            设备标识,
* 参数: docId             自由创建作品唯一标识
* 参数: userId            用户唯一标识
* 参数: docString         自由创建文档的 json 字符串
*
* 详情见接口定义: http://yapi.yijianxiu.com:7000/project/11/interface/api/3814
* */
function updateCustomVideoDoc_app_v3_0(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');
    var docString = retUtil.stringFromReq(req, 'docString');
    if(userId <=0 || docId <=0 || docString.length <= 2) {
        return retUtil.ret_err_json('参数错误', res);
    }
    var opt = {
        device : device,
        userId : userId,
        uniDocId : docId,
        docString : docString
    };
    documentUtil.updateCustomVideoDoc(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/updateCustomVideoDoc_app_v3_0', updateCustomVideoDoc_app_v3_0);
router.post('/updateCustomVideoDoc_app_v3_0', updateCustomVideoDoc_app_v3_0);


/*
* 获取自由创建文档数据_ APP_3_0 添加_N
*
* @author 王俊
* @date 2018-07-04
*
* 参数: device            设备标识,
* 参数: userId            用户唯一标识
* 参数: docId             自由创建作品唯一标识
*
* 详情见接口定义: http://yapi.yijianxiu.com:7000/project/11/interface/api/3817
* */
function getCustomVideoDocContent_app_v3_0(req, res, next) {
    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');

    if(userId <=0 || docId <=0) {
        return retUtil.ret_err_json('参数错误', res);
    }

    var opt = {
        uniDocId : docId,
        userId : userId,
        device : device
    };
    documentUtil.getCustomVideoUserDocContent(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getCustomVideoDocContent_app_v3_0', getCustomVideoDocContent_app_v3_0);
router.post('/getCustomVideoDocContent_app_v3_0', getCustomVideoDocContent_app_v3_0);


/*
* 排版自由创建作品_APP_3_0 添加_N
*
* @author 王俊
* @date 2018-07-04
*
* 参数: device            设备标识,
* 参数: userId            用户唯一标识
* 参数: docId             自由创建作品唯一标识
*
* 详情见接口定义: http://yapi.yijianxiu.com:7000/project/11/interface/api/3820
* */
function previewCustomVideoDoc_app_v3_0(req, res, next) {
    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var docId = retUtil.numberFromReq(req, 'docId');
    // 分享也有预览, 此处不做限制
    if(docId <=0) {
        return retUtil.ret_err_json('参数错误', res);
    }

    var opt = {
        uniDocId : docId,
        userId : userId,
        device : device
    };
    documentUtil.getUserCustomVideoDocPreview(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/previewCustomVideoDoc_app_v3_0', previewCustomVideoDoc_app_v3_0);
router.post('/previewCustomVideoDoc_app_v3_0', previewCustomVideoDoc_app_v3_0);





//---------------------------------------------
module.exports = router;